import java.util.Scanner;

public class Test_7_18_2 {
    //买卖票的最好时机
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] price = new int[n];
        for (int i = 0; i < n; i++) {
            price[i] = in.nextInt();
        }
        int prevMin = price[0];//初始化最小值
        int ret = 0;//初始化收益
        //从头开始作为卖出点进行遍历
        for (int i = 1; i < n; i++) {
            int min = Math.min(prevMin,price[i - 1]);//更新当前位置前面的最小买进地方
            ret = Math.max(ret,price[i] - min);//更新最大收益
            prevMin = min;
        }
        System.out.println(ret < 0 ? 0 : ret);
        //下面的流程没有考虑完全
//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        long[] price = new long[n];
//        for (int i = 0; i < n; i++) {
//            price[i] = in.nextInt();
//        }
//        long minVal = 10000;
//        long maxval = 0;
//        int buy = 0;
//        int y = n - 1;//分别表示买入时间和卖出时间
//        long ret = 0;//表示最高收益
//        if (n == 0 || n == 1){
//            System.out.println(0);
//        }else {
//            while (buy <= y){
//                minVal = Math.min(minVal,price[buy]);
//                maxval = Math.max(maxval,price[y]);
//                ret = Math.max(maxval - minVal,ret);
//                buy++;
//                y--;
//            }
//            System.out.println(ret);
//        }
    }
}
